#ifndef MODEL_DIFFERENTIAL_KINEMATICS_H
#define MODEL_DIFFERENTIAL_KINEMATICS_H

#include "model/model_impl/basic_data_structure.hpp"
#include "model/model_impl/forward_kinematics.hpp"
#include "model/model_impl/robot_model.hpp"

namespace ZORAL
{
    class DifferentialKinematics
    {
    private:
        RobotModel *rm_;
        ForwardKinematics *fk_;

    public:
        explicit DifferentialKinematics(ForwardKinematics *fk)
        {
            fk_ = fk;
        }
//        explicit DifferentialKinematics(const std::string &robot_name)
//        {
//            rm_ = new RobotModel(robot_name);
//            fk_ = new ForwardKinematics(rm_);
//        }

        int calJacobian(const VectorXd &q, const bool &relate_to_base, Jacobian &jac);
    };
} // namespace ZORAL
#endif // MODEL_DIFFERENTIAL_KINEMATICS_H